package com.loeng.module.system.service.tenant;

import com.loeng.framework.tenant.core.context.TenantContextHolder;
import com.loeng.module.system.dal.dataobject.tenant.TenantDO;
import com.loeng.module.system.service.tenant.handler.TenantMenuHandler;

/**
 * 租户接口
 * @author loeng zhuo
 */
public interface TenantService {

    /**
     * 根据租户名，获得租户信息
     *
     * @param name 租户名
     * @return 租户信息
     */
    TenantDO getTenantByName(String name);

    /**
     * 根据域名，获得租户信息
     *
     * @param website 域名
     * @return 租户信息
     */
    TenantDO getTenantByWebsite(String website);

    /**
     * 进行租户的菜单处理逻辑
     * 其中，租户编号从 {@link TenantContextHolder} 上下文中获取
     *
     * @param handler 处理器
     */
    void handleTenantMenu(TenantMenuHandler handler);


    /**
     * 获得租户
     *
     * @param id 编号
     * @return 租户
     */
    TenantDO getTenant(Long id);

}
